﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ERPStore.Services
{
	/// <summary>
	/// Gestion des coupons
	/// </summary>
	public interface IIncentiveService
	{
		/// <summary>
		/// Verification de l'utilisation du coupon et de son application
		/// sur le panier.
		/// </summary>
		/// <param name="cart">The cart.</param>
		/// <param name="couponCode">The coupon code.</param>
		/// <returns></returns>
		IEnumerable<Models.BrokenRule> ValidateUse(Models.OrderCart cart, string couponCode, Models.UserPrincipal principal);
		/// <summary>
		/// Application du coupon sur le panier.
		/// </summary>
		/// <param name="cart">The cart.</param>
		/// <param name="couponCode">The coupon code.</param>
		void AddCoupon(Models.OrderCart cart, string couponCode, Models.UserPrincipal principal);
		/// <summary>
		/// Supprime le coupon présent dans le panier
		/// </summary>
		/// <param name="cart"></param>
		void RemoveCoupon(Models.OrderCart cart, string couponCode, Models.UserPrincipal principal);

		/// <summary>
		/// Recalcul les coupons pour un panier donné
		/// </summary>
		/// <param name="cart"></param>
		/// <param name="principal"></param>
		void Recalc(Models.OrderCart cart, Models.UserPrincipal principal);

		/// <summary>
		/// Charge la liste des coupons pour un panier
		/// </summary>
		/// <param name="cart"></param>
		/// <returns></returns>
		void LoadCouponList(Models.OrderCart cart);

	}
}
